/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package Model.dao;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;

import Model.pojo.Cliente;
import Model.pojo.Item;

/**
 *
 * @author Ariane
 */
public class ClienteDao implements InterfaceClienteDao {
	private File arquivo = new File("ListaCliente.txt");
	private ArrayList<Cliente> lista = new ArrayList<Cliente>();
	private String nome;
	private String cpf;
	private String endereco;
	private Cliente cliente;
		
	private FileWriter fw;
	private BufferedWriter bw;
	private FileReader fr;
	private BufferedReader br;
	Iterator<Cliente> it;
	
	public ArrayList<Cliente> ler() throws IOException{
		if(arquivo.exists() == false){
			arquivo.createNewFile();
			return lista;//vai retornar lista de clientes
		}
		fr = new FileReader (arquivo);
		br = new BufferedReader (fr);//joga os dados na memória, ler do arquivo
		while (br.ready()){
			nome = br.readLine();
			cpf = br.readLine();
			endereco = br.readLine();
			inserir(nome, cpf, endereco);
		}
		br.close();
		fr.close();
		return lista; 
	}
	
	public ArrayList<Cliente> getLista() {
		return lista;
	}

	public Cliente verificar (String cpf){//verifica se o cpf ta salvo na lista de clientes
		if (lista.isEmpty() == true) return null;
	 
		it = lista.iterator(); 
		while (it.hasNext()) {  
			Cliente aux = it.next();  
		    if (aux.getCpf().equals(cpf)){  
		        return aux;
		   }  
		}
		return null;
	}
	
	public void inserir (String nome, String cpf, String endereco){//inserir os clientes na lista em execução
		cliente = new Cliente(nome, cpf, endereco);
		lista.add(cliente);
	}
	
	//Exclui um cliente de uma lista de clientes. 
	public ArrayList<Cliente> excluir(String cpf) {
		if (cliente == null || lista.isEmpty() == true) return lista;
		it = lista.iterator();
		if (lista.get(0).getCpf().equals(cpf)){
			lista.remove(0);
		}
		else{
			while (it.hasNext()){
				if (it.next().getCpf().equals(cpf)){
					it.remove();	
					break;
				}
			}
		}
		return lista;	
	}
		
	//Salva um cliente no arquivo ListaCliente.
	public boolean salvar(Cliente cliente) throws IOException{
		if (cliente == null) return false;
		fw = new FileWriter(arquivo, true);
		bw = new BufferedWriter (fw);
		bw.write(cliente.getNome());
		bw.newLine();
		bw.write(cliente.getCpf());
		bw.newLine();
		bw.close();
		fw.close();
		return true;
	}
	
	public boolean salvar(ArrayList<Cliente> lista) throws IOException{//Pega os clientes da lista e vai salvando no arquivo
			if (lista.isEmpty() == true) return false;
			fw = new FileWriter(arquivo);
			it = lista.iterator();
			while (it.hasNext()){
				salvar(it.next());
			}
			return true;
		}
}



